fix(whatsapp-baileys): Verifica eventos com falhas e fallback para erro ao baixar mídias#1660
Merged
DavidsonGomes merged 2 commits intoEvolutionAPI:developfrom Jun 27, 2025
Merged
Conversation
- Implement broken event checking before duplicate message checking. (Do not process failed events). - Implement error handling when downloading media with a fallback mechanism.
Contributor
Reviewer's GuideAdds pre-processing filters for known Baileys 400/403 errors on incoming message events and introduces a robust fallback path for downloading media when the primary method fails. Sequence diagram for robust media download with fallback in WhatsApp Baileys servicesequenceDiagram
participant Service as BaileysStartupService
participant Baileys as Baileys Library
participant Logger as Logger
Service->>Baileys: downloadMediaMessage()
alt Success
Baileys-->>Service: Buffer
else Failure
Service->>Logger: Log error (Download Media failed)
Service->>Service: Wait 5 seconds
Service->>Baileys: downloadContentFromMessage()
alt Fallback Success
Baileys-->>Service: Media Stream
Service->>Service: Concatenate chunks to Buffer
Service->>Logger: Log info (Download successful)
else Fallback Failure
Service->>Logger: Log error (Fallback also failed)
end
end
Sequence diagram for pre-processing Baileys message events with error filteringsequenceDiagram
participant Service as BaileysStartupService
participant Logger as Logger
participant Baileys as Baileys Library
Baileys-->>Service: message.upsert(messages)
loop For each received message
alt messageStubParameters contains known error
Service->>Logger: Log warning (Message ignored)
Service-->>Service: continue (skip processing)
else
Service->>Service: Process message as usual
end
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
…Base64FromMediaMessage method
Contributor
Author
|
@DavidsonGomes Estou na segunda semana testando essa solução em diversos clientes em produção. Aqui já validei a solução antes de subir o PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Descrição
getBase64FromMediaMessagerecebemos um erro de download.message.upsertfoi super positiva, mas nos momentos em que recebo os erros 400 e 403 com a descrição de No matching sessions found for message, Bad MAC, failed to decrypt message ou SessionError, impede o re-processamento de do evento no retry da Baileys. Isso causa em certas situações o impedimento do processamento das primeiras mensagens até que a sessão e tokens de descriptografia estejam validos.Solução
trydos eventosmessage.upsert.downloadContentFromMessageapós erro ao tentar baixar com o métodogetBase64FromMediaMessage. (Por algum motivodownloadContentFromMessagefunciona melhor.)Summary by Sourcery
Handle transient Baileys decryption errors by filtering specific message stub parameters before processing and improve media download reliability with a retry fallback using downloadContentFromMessage.
Enhancements: